package rpc_xml;

import controladores.ControladoraTransacoes;
import entidades.Acao;
import entidades.RegistroInteresse;
import java.util.ArrayList;
import java.util.List;
import entidades.Util;
import java.rmi.RemoteException;

/**
 * A classe que implementa a comunicação do RPC.
 *
 */
public class ServicosServidor {

    /**
     * Método que retorna a lista de registros de venda cadastrados no servidor.
     *
     * @return lista com os registros de venda do servidor.
     * @throws RemoteException caso haja erro de conexão no JavaRMI.
     */
    public String[] consultarRegistrosInteresse() {
        
        // Cria uma cópia da lista de vendas
        String[] retorno = new String[Util.vendas.size()];
        for (int indiceRegistro = 0; indiceRegistro < Util.vendas.size(); indiceRegistro++) {
            retorno[indiceRegistro] = " - " + ((RegistroInteresse) Util.vendas.get(indiceRegistro)).getAcao().getQuantidade() + " ações da empresa: " +((RegistroInteresse) Util.vendas.get(indiceRegistro)).getAcao().getEmpresa();
        }
        
        Util.janelaPrincipal.inserirLog("Enviei os registros de venda\n");

        return retorno;
    }

    /**
     * Registra um interesse de compra de ação no servidor e verifica se é
     * possível realizar alguma transação.
     *
     * @param registroCompra registro de compra a ser cadastrado no servidor.
     * @throws RemoteException caso haja erro de conexão no JavaRMI.
     */
    public int registrarInteresseCompra(String empresa, int quantidade, double prazo, double preco, String tempoInicial, String caminhoCliente) {
        Acao acao = new Acao(empresa, quantidade);
        RegistroInteresse registroCompra = new RegistroInteresse(acao, prazo, preco, tempoInicial, caminhoCliente);
        Util.janelaPrincipal.inserirLog("Um cliente registrou interesse de compra de ação da " + registroCompra.getAcao().getEmpresa() + "\n");
        Util.compras.adicionar(registroCompra);
        Util.indicarNovoRegistro();
        return 1;
    }

    /**
     * Registra um interesse de venda de ação no servidor e verifica se é
     * possível realizar alguma transação.
     *
     * @param registroVenda registro de venda a ser cadastrado no servidor.
     * @throws RemoteException caso haja erro de conexão no JavaRMI.
     */
    public int registrarInteresseVenda(String empresa, int quantidade, double prazo, double preco, String tempoInicial, String caminhoCliente) {
        Acao acao = new Acao(empresa, quantidade);
        RegistroInteresse registroVenda = new RegistroInteresse(acao, prazo, preco, tempoInicial, caminhoCliente);
        Util.janelaPrincipal.inserirLog("Um cliente registrou interesse de venda de ação da " + (registroVenda).getAcao().getEmpresa() + "\n");
        Util.vendas.adicionar(registroVenda);
        Util.indicarNovoRegistro();
        return 1;
    }
}